package com.system.controller;

import java.util.List;
import java.util.Map;

import com.frame.ar.kit.ObjKit;
import com.frame.ar.model.BJUIPager;
import com.frame.ar.vo.AjaxDone;
import com.frame.jfinal.controller.BaseController;
import com.jfinal.aop.Before;
import com.system.model.User;
import com.system.service.UserInfoService;
import com.system.validator.ManagerValidator;

/*******************************************
 * 作用描述：用户信息管理控制器
 ******************************************* 
 * @author LRC
 * @createDate 2015-9-13
 * @version v1.0
 * @updateRecord 格式：时间，作者，修改说明
 ******************************************* 
 * 
 */
public class UserInfoController extends BaseController {

	public void index() {
		render("homePage.html");
	}

	public void toChangePassword() {
		render("/WEB-INF/html/common/changePwd.html");
	}

	/*******************************************
	 * 功能描述：用户回收管理
	 ******************************************* 
	 * @createDate 2015-9-14 by LRC
	 * @updateRecord 格式：时间，作者，修改说明
	 ******************************************* 
	 * 
	 */
	public void userTrash() {
		String action = getPara("action");
		if (action == null) {
			renderError(404);
		}
		if ("mgr".equals(action)) {
			// 分页查询数据
			BJUIPager pager = new BJUIPager();
			pager.initQueryParams(this, "like", "action", "_", "total");
			pager.getQr().put("dataStatus", "=", 0);
			pager.setOrderDefaultValue("deleteTime desc");
			UserInfoService.findByPage(pager);
			setAttr("pager", pager);
			render("userTrash.html");
			return;
		}
		String id = getPara("id");
		AjaxDone done = new AjaxDone();
		boolean result = false;
		if (!ObjKit.isNull(id)) {
			
			id = id.trim();
			String[] ids = id.split(",");
			switch (action) {
			case "recover":// 撤销删除
				// 查询待审核用户列表
				result = UserInfoService.recoverUser(ids);
				break;
			case "shiftdel":// 彻底删除
				// 查询待审核用户列表
				result = UserInfoService.shiftDeleteUser(ids);
				break;
			default:
				break;
			}
		}
		done.setStatusCode(result ? AjaxDone.OK : AjaxDone.ERROR);
		renderJson(done);
	}

	/*******************************************
	 * 功能描述：用户信息分页查询
	 ******************************************* 
	 * @createDate 2015-9-13 by LRC
	 * @updateRecord 格式：时间，作者，修改说明
	 ******************************************* 
	 * 
	 */
	public void findByPage() {
		BJUIPager pager = new BJUIPager();
		pager.initQueryParams(this, "=");
		pager.getQr().put("dataStatus", "=", 1);
		pager.setOrderDefaultValue("insertTime desc");
		UserInfoService.findByPage(pager);
		renderJson(pager.getPageData());
	}

	/*******************************************
	 * 功能描述：用户信息管理
	 ******************************************* 
	 * @createDate 2015-9-13 by LRC
	 * @updateRecord 格式：时间，作者，修改说明
	 ******************************************* 
	 * 
	 */
	public void userInfoMgr() {
		String action = getPara("action");
		if (action == null) {
			renderError(404);
			return;
		}
		if ("mgr".equals(action)) {
			// 跳转到菜单管理主界面
			render("userList.html");
			return;
		}
		AjaxDone done = new AjaxDone();
		boolean success = false;
		try {
			switch (action) {
			case "save":// 保存操作
				success = UserInfoService.saveDataGridUser(this);
				break;
			case "del":// 删除操作
				success = UserInfoService.deleteUser(this);
				break;
			default:
				break;
			}
			done.setStatusCode(success ? AjaxDone.OK : AjaxDone.ERROR);
		} catch (Exception e) {
			e.printStackTrace();
			done.setStatusCode(AjaxDone.ERROR);
		}
		renderJson(done);
	}
	
	/*******************************************
	 * 功能描述：用户菜单列表配置
	 *******************************************
	 * @createDate 2015-9-19 by LRC 
	 * @updateRecord 格式：时间，作者，修改说明
	 *******************************************
	 * 
	 */
	@Before(ManagerValidator.class)
	public void userMenuMgr(){
		String action = getPara("action");
		if (action == null) {
			renderError(404);
			return;
		}
		Object userId = null;
		List<Map<String,Object>> tree;
		switch(action){
			case "mgr":// 分页查询数据
				BJUIPager pager = new BJUIPager();
				pager.initQueryParams(this, "like", "action", "_", "total");
				pager.getQr().put("dataStatus", "=", 1);
				pager.setOrderDefaultValue("insertTime desc");
				UserInfoService.findByPage(pager);
				setAttr("pager", pager);
				render("userMenuTree.html");
				break;
			case "getUserMenuTree"://获取用户菜单树
				userId = getPara("userId");
				tree = UserInfoService.getUserMenuTree(userId);
				renderJson(tree);
				break;
			case "getUserLeafMenuId"://获取用户拥有的菜单ID
				userId = getPara("userId");
				List<Integer> ids = User.dao.getUserMenuId(userId,false);
				renderJson(ids);
				break;
			case "saveUserMenu"://保存用户菜单配置
				Object menuId = getPara("menuId");
				userId = getPara("userId");
				AjaxDone done = UserInfoService.saveUserMenu(userId,menuId);
				renderJson(done);
				break;
			default:renderError(404);//未找到对应操作参数
		}
	}
}
